home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / nfsd / cache.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.5 KB  |  80 lines

  1. /*
  2.  * include/linux/nfsd/cache.h
  3.  *
  4.  * Request reply cache. This was heavily inspired by the
  5.  * implementation in 4.3BSD/4.4BSD.
  6.  *
  7.  * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
  8.  */
  9.  
  10. #ifndef NFSCACHE_H
  11. #define NFSCACHE_H
  12.  
  13. #include <linux/in.h>
  14. #include <linux/uio.h>
  15.  
  16. /*
  17.  * Representation of a reply cache entry. The first two members *must*
  18.  * be hash_next and hash_prev.
  19.  */
  20. struct svc_cacherep {
  21.     struct hlist_node    c_hash;
  22.     struct list_head    c_lru;
  23.  
  24.     unsigned char        c_state,    /* unused, inprog, done */
  25.                 c_type,        /* status, buffer */
  26.                 c_secure : 1;    /* req came from port < 1024 */
  27.     struct sockaddr_in    c_addr;
  28.     __be32            c_xid;
  29.     u32            c_prot;
  30.     u32            c_proc;
  31.     u32            c_vers;
  32.     unsigned long        c_timestamp;
  33.     union {
  34.         struct kvec    u_vec;
  35.         __be32        u_status;
  36.     }            c_u;
  37. };
  38.  
  39. #define c_replvec        c_u.u_vec
  40. #define c_replstat        c_u.u_status
  41.  
  42. /* cache entry states */
  43. enum {
  44.     RC_UNUSED,
  45.     RC_INPROG,
  46.     RC_DONE
  47. };
  48.  
  49. /* return values */
  50. enum {
  51.     RC_DROPIT,
  52.     RC_REPLY,
  53.     RC_DOIT,
  54.     RC_INTR
  55. };
  56.  
  57. /*
  58.  * Cache types.
  59.  * We may want to add more types one day, e.g. for diropres and
  60.  * attrstat replies. Using cache entries with fixed length instead
  61.  * of buffer pointers may be more efficient.
  62.  */
  63. enum {
  64.     RC_NOCACHE,
  65.     RC_REPLSTAT,
  66.     RC_REPLBUFF,
  67. };
  68.  
  69. /*
  70.  * If requests are retransmitted within this interval, they're dropped.
  71.  */
  72. #define RC_DELAY        (HZ/5)
  73.  
  74. int    nfsd_reply_cache_init(void);
  75. void    nfsd_reply_cache_shutdown(void);
  76. int    nfsd_cache_lookup(struct svc_rqst *, int);
  77. void    nfsd_cache_update(struct svc_rqst *, int, __be32 *);
  78.  
  79. #endif /* NFSCACHE_H */
  80.